package com.dfec.book.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.dfec.book.entity.BookCategoryEntity;
import com.dfec.book.util.PageUtils;

import java.util.List;

/**
 * 图书类别接口层
 * @author tangrg
 * @email 1446232546@qq.com
 * @date 2025-06-2025/6/19 09:45:44
 */
public interface BookCategoryService extends IService<BookCategoryEntity> {



    /**
     * 分页查询图书
     * @param bookCategoryEntity 图书类别信息
     * @return 分页对象
     */
    PageUtils getBookCategoryPage(BookCategoryEntity bookCategoryEntity);

    /**
     * 获取所有图书类别
     * @return 图书类别列表
     */
    List<BookCategoryEntity> getAllCategories();

    /**
     * 添加新类别
     * @param category 类别实体对象
     * @return 添加结果
     * @throws RuntimeException 如果类别名称已存在
     */
    boolean addCategory(BookCategoryEntity category);

    /**
     * 根据ID删除类别
     * @param categoryIds 类别ID
     * @return 删除结果
     * @throws RuntimeException 如果类别下存在图书
     */
    boolean deleteCategory(List<Integer> categoryIds);

    /**
     * 根据名称查找类别
     * @param categoryName 类别名称
     * @return 类别实体对象，未找到返回null
     */
    BookCategoryEntity findCategoryByName(String categoryName);

    /**
     * 更新类别信息
     * @param category 更新后的类别实体
     * @return 更新结果
     * @throws RuntimeException 如果新类别名称与现有类别冲突
     */
    boolean updateCategory(BookCategoryEntity category);

    /**
     * 根据ID判断类别是否存在
     * @param categoryId 类别ID
     * @return 存在返回true，否则返回false
     */
    boolean existsById(Integer categoryId);
}